/*
题目：给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

必须在原数组上操作，不能拷贝额外的数组。
尽量减少操作次数。
*/
using System;

namespace LeeCodeText1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] c = {0,1,0,3,12};
            Solution s = new Solution();
            s.MoveZeroes(c);
            for(int i = 0;i < c.Length; i++)
            {
                Console.Write(c[i]);   
            }
        }
    }
    public class Solution
    {
        public void MoveZeroes(int[] nums)
        {
            int slow = 0;
            int temp = 0;
            for (int fast = 0; fast < nums.Length; fast++)
            {
                if (nums[fast] != 0)
                {
                    temp = nums[slow];
                    nums[slow] = nums[fast];
                    nums[fast] = temp;
                    slow++;
                }
            }
        }
    }
}

